package cn.lg.soar.database.translate;

import cn.lg.soar.common.util.trans.annotations.Translate;

import java.lang.annotation.*;

/**
 * 根据实体翻译（不推荐大数据量使用，影响性能，因为是每条记录单独查数据库，虽然加入了缓存但是数据量大无法命中缓存压力将到达数据库）
 * @author luguoxiang
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 * TODO 支持数组属性翻译
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.METHOD })
@Translate(TranslateByEntityHandler.class)
public @interface TranslateByEntity {

    /**
     * 翻译数据源对象实体类
     * @return
     */
    Class<?> value();

    /**
     * 获取 key 的方法或字段
     * @return
     */
    String key() default "id";

    /**
     * 获取 label 的方法或字段
     * @return
     */
    String label() default "name";

    /**
     * 缓存大小
     * @return
     */
    int cacheSize() default 64;

    /**
     * 缓存有效期（单位：秒）
     * @return
     */
    int cacheExpire() default 120;

}
